#pragma once

#include "hiberlite.h"
#include "mhstringhashmap.h"

namespace mediahouse {
	class CMHPropertyContainer {
		friend class hiberlite::access;

		template<class Archive>
		void hibernate(Archive & ar) {
			ar & HIBERLITE_NVP(m_Properties);
		}

	private:
		wxHashmapStr2StrNoCase m_Properties;

	public:
		CMHPropertyContainer() {

		}

		virtual ~CMHPropertyContainer() {

		}

		virtual void SetProperty(const wxString & name, const wxString & value);
		virtual void RemoveProperty(const wxString & name);
		virtual int HasProperty(const wxString & name);
		virtual int GetProperty(const wxString & name, wxString & value);
		virtual void ClearProperties();
		virtual int GetAllProperties(wxHashmapStr2StrNoCase & properties);
	};
}
